iT邦幫忙

2022 iThome 鐵人賽

DAY 8
0
Mobile Development

IOS新手之旅系列 第 8

IOS新手之旅 Day8:世界時鐘(2)

  • 分享至 

  • xImage
  •  

昨天用完搜尋時區的功能和兩個畫面的切換,今天要來嘗試在兩個畫面傳值。

在搜尋畫面找到想要的時區之後,卻沒辦法將時區傳回上一個畫面顯示出來,這裡就學到新的東西,跳頁傳值。

傳值的方法有很多,這裡我用的是寫一個protocol來反向傳值。

Protocol

首先要再傳出值的畫面先建立一個新的protocol,記得要寫在class外面,簡單的樣子就大概像下面這樣。

protocol AddTimeZoneDelegate{
    func AddTimeZone(AddedTimeZones: String)
}

然後在class裡新增protocol的delegate屬性。

    var ShowTimeZoneDelegate: AddTimeZoneDelegate?

最後在你要返回上一頁前呼叫,並且賦值給傳值的參數,這裡是在點選要的時區的時候返回。

    func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) {
        ShowTimeZoneDelegate?.AddTimeZone(AddedTimeZones: TimeZones[indexPath.row])
        
        self.navigationController?.popViewController(animated: true)
    }

傳值的畫面有了,接下來換接收值的畫面,首先要做的就是讓畫面也遵從新的protocol,在class後新增要遵從的protocol名稱,這樣就能自由的使用protocol裡的功能。

但是能使用功能還不夠,因為protocol還沒指定delegate,不知道是由誰來工作。

要在前往下一頁的地方,指定delegate,這樣就能正常地傳值了。

        let SearchPageVC = SearchPageViewController() 
        SearchPageVC.ShowTimeZoneDelegate = self
        
        self.navigationController?.pushViewController(SearchPageVC, animated: true)

今天的內容就到這裡,明天要開始製作鬧鐘,製作前也有一些新的東西要了解。


上一篇
IOS新手之旅 Day7:世界時鐘(1)
下一篇
IOS新手之旅 Day9:Cocoapods
系列文
IOS新手之旅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言